WebRTC下 的 NAT 穿透技术

您所在的位置:网站首页 webrtc NAT穿透成功概率 WebRTC下 的 NAT 穿透技术

WebRTC下 的 NAT 穿透技术

2024-07-11 20:12| 来源: 网络整理| 查看: 265

虽然实际过程远比这个复杂,但上面的描述概括了NAT处理报文的几个关键特点:

网络被分为私网和公网两个部分,NAT网关设置在私网到公网的路由出口位置,双向流量必须都要经过NAT网关;

网络访问只能先由私网侧发起,公网无法主动访问私网主机;

NAT网关在两个访问方向上完成两次地址的转换或翻译,出方向做源信息替换,入方向做目的信息替换;

NAT网关的存在对通信双方是保持透明的;

NAT网关为了实现双向翻译的功能,需要维护一张关联表,把会话的信息保存下来。

1.3 一对一的 NAT

如果一个内部主机唯一占用一个公网IP,这种方式被称为一对一模型。此种方式下,转换上层协议就是不必要的,因为一个公网IP就能唯一对应一个内部主机。显然,这种方式对节约公网IP没有太大意义,主要是为了实现一些特殊的组网需求。比如用户希望隐藏内部主机的真实IP,或者实现两个IP地址重叠网络的通信。

1.4 一对多的NAT

NAT最典型的应用场景就如同图2描述的,一个组织网络,在出口位置部署NAT网关,所有对公网的访问表现为一台主机。这就是所谓的一对多模型。这种方式下,出口设备只占用一个由Internet服务提供商分配的公网IP地址。面对私网内部数量庞大的主机,如果NAT只进行IP地址的简单替换,就会产生一个问题:当有多个内部主机去访问同一个服务器时,从返回的信息不足以区分响应应该转发到哪个内部主机。此时,需要NAT设备根据传输层信息或其他上层协议去区分不同的会话,并且可能要对上层协议的标识进行转换,比如TCP或UDP端口号。这样NAT网关就可以将不同的内部连接访问映射到同一公网IP的不同传输层端口,通过这种方式实现公网IP的复用和解复用。这种方式也被称为端口转换PAT、NAPT或IP伪装,但更多时候直接被称为NAT,因为它是最典型的一种应用模式。

02WebRTC的NAT穿越技术

NAT设备的广泛存在,却给Internet上的主机,特别是处于不同内网中的主机进行P2P通信带来了障碍,限制了P2P的应用。NAT阻碍主机进行P2P通信的主要原因是NAT不允许公网主机主动访问内网主机,这使得Internet上具有公网IP地址的主机不能主动访问NAT之后的主机,而位于不同NAT之后的主机之间更是无法相互识别因而不能直接交换信息。因此,要在目前的网络环境中进行有效的P2P通信,就必须研究相应的方案来穿越NAT 。

WebRTC主要是用了ICE,STUN,TURN来实现建立和维持UDP端到端连接。

2.1 ICE:交互式连接建立

(Interactive Connectivity Establishment)

信令需要首次使用中间服务器来交换元数据,但是一旦完成之后,WebRTC尝试在用户之间建立一条直接的P2P连接。这项处理工作由ICE框架负责。

ICE是一个用来在对等端之间建立连接的框架。尽管WebRTC想要使用直接的P2P连接,但实际上由于广泛存在的NAT(网络地址转换),使这项工作变得很困难。

由于现在所使用的IPv4机制的长度只有32位,绝大多数网络设备都没有一个可以在互联网上直接可见的唯一公共IPv4地址。NAT在传出请求通过它的时候,动态地转换私有地址到公共地址。相似的,传入请求的时候讲公共IP地址转换回私有IP,确保在内网上可以进行正确的路由。因此,共享私有IP地址通常是不足以提供足够的信息来建立一个通往对等端的连接。ICE尝试克服由NAT产生的困难,来找到一条连接对等端的最佳道路。

通过尝试各种可能,ICE可以选择一个最高效的方法来工作。ICE首先尝试使用从设备操作系统和网卡观察到的主机地址来创建连接;如果失败的话(对于处在NAT之后的设备来说是必然发生的事情),ICE会使用STURN服务器获得一个外部地址。如果这次尝试也失败的话,数据流会通过一个TURN中继服务器传回重新进行路由。

候选通信路由以基于文字的形式呈现,并且以优先级为顺序进行排列。会选择以下几点中的一种形式:— 直接P2P通信 — 使用STUN,用一个端口映射NAT穿透(这条路由最终会产生直接的P2P通信) — 使用TURN作为中间媒介。

如果所有可能候选项都不满足,会选择一条负荷最小的路线作为路由。

2.2 STUN:会话对NAT的穿越能力

为了进行P2P通信,会话参与双方都需要至少知道其对等端的IP地址和指定的UDP端口。作为结果,在WebRTC通信建立之前,需要进行一定数量的信息交换。

每个对等端需要使用一个STUN服务器来决定他们的公共IP地址,这个IP在连接建立的时候回呗ICE框架所引用。STUN服务器是典型的公开可接入性,并且可以由WebRTC应用自由使用。

2.3 TURN

最终如果P2P通信建立失败的话,一个后退选项会通过TURN服务器提供。通过在对等端之间传输数据流,WebRTC通信可以得到确定,但是会造成媒体质量的下降和延迟。

TURN服务器无论在何种终端用户的环境中,都可以确保建立通话的高成功率。因为数据中间会被送入一个中间服务器,所以服务器带宽也会被占用。如果同时有很多通话被路由到了服务器处,那么就需要有很大的带宽才能满足。

服务器本身来说并不是刻意随意连入的,需要由应用提供者来进行特定的供应。

03NAT的未来

NAT是为延缓IPv4地址耗尽而推出的技术。随着IPv4地址的濒临耗尽,再经济的模式也无以为继,IPv4必须退出历史舞台。人们自然会认为,NAT作为IPv4的超级补丁技术使命已经完结。实际情况是,IPv4向IPv6过渡的阶段,NAT仍然是一项必不可少的技术手段。因为Internet无法在一日之内完成全网升级,必然是局部升级,逐渐替换。在两套协议并存的时期,用户和服务资源分布在不同网络之间,跨网访问的需求必须得到满足。这正是NAT所擅长的领域,地址替换,因此NAT-PT应运而生。由于IPv4和IPv6之间的差异,NAT要做的事比以往更复杂,有更多的限制和细节。

毫不夸张地说,正是有了NAT,以IPv4为基础的Internet才能容纳数十亿的用户终端,成就今日之辉煌。IPv4已至日暮西山,IPv6的黎明尚未来临,Internet比任何时刻都更依赖NAT这项过渡技术。NAT的历史再次证明,翻天覆地的划时代进步不一定有市场,抱残守缺的修修补补未必不会成功。在世代更替之时让我们走近NAT,领略IP领域更多细微但不高深的知识,理解NAT就是理解变换万千的应用世界。

·····························返回搜狐,查看更多



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3